"""
类方法：为了方便处理类属性
    1. 用装饰器 @classmethod 来标识其为类方法
    2. 一般以 cls 作为第一个参数，代表当前这个类，这个参数不用人为传参，解释器会自动处理
    3. 类方法调用：
        - 类名.类方法()    推荐用法
        - 实例对象名.类方法()
    4. 在类方法内部
        - 通过 cls.访问类的属性
        - 也可以通过 cls.调用其他的类方法

需求：
# 1. 定义一个 工具类
# 2. 每件工具都有自己的 name
# 3. 在类中封装一个 show_tool_count 的类方法， 输出使用当前这个类， 创建的对象个数
"""

class Tool(object):
    # 在类里面，方法的外面定义的变量
    count = 0   # 类属性

    """工具类"""
    def __init__(self, name):
        # self.变量 = 内容     对象.变量 = 内容，  实例属性
        self.name = name

        # 类属性 += 1,  操作类属性：类名.类属性
        Tool.count += 1

    @classmethod
    def show_tool_count(cls):   # cls代表当前的类名
        print(f'对象个数为{Tool.count}')
        print(f'对象个数为{cls.count}')

# 实例化3个对象
t1 = Tool('锤子')
t2 = Tool('石头')
t3 = Tool('扳手')

# 调用类方法, 类名.类方法()
Tool.show_tool_count()
